/* eslint-disable max-classes-per-file */
/*
 * @Description:
 * @Version: 2.0
 * @Autor: wiz
 * @Date: 2023-04-30 12:22:02
 * @LastEditors: wiz
 * @LastEditTime: 2023-08-01 15:00:25
 */

export interface I_service {
  Name: string;
  Ver: string;
}

export interface I_sysVersion {
  platform: string;
  web?: string;
  services: Array<I_service>;
}

class T_sysInfo_info {
  copyRightOwner: string;

  copyrightInfo: string;

  currentUserID: string;

  currentUserName: string;

  currentUserNo: string;

  id: string;

  maxUsers: number;

  needVerifyCode: boolean;

  oem: boolean;

  systemName: string;

  systemVersion: I_sysVersion;

  defaultLang: string;
}

class T_sysInfo_navs {
  hint: string;

  iconName: string;

  id: string;

  menus: { groupMembers: Array<any>; groupName: string }[];

  sn: number;

  title: number;
}

class T_sysInfo {
  info: T_sysInfo_info;

  navs: T_sysInfo_navs[];

  roleInfo: { roleType: number; objID: number }[];

  set: {
    abbrvName: string;
    companyName: string;
    licId: string;
    regNo: string;
    selfExpand: number;
    userCount: number;
  };

  systemMessage: {
    message: any;
    notify: { readMsgQty: number };
    todo: { pendingApprovalQty: number };
  };

  constructor() {
    this.navs = [];
    this.roleInfo = [];
  }
}

export class T_sysInfoRes {
  success: boolean;

  msg?: string;

  data: T_sysInfo;
}

export interface I_sysInfoRes extends T_sysInfoRes {}
